<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ElementUI主页</title>
    <link rel="stylesheet" href="css/index.css">



</head>
<body>
<div id="app">

    <el-form  ref="ruleForm" status-icon   :model="formdata"  :rules="rules" label-width="100px" class="demo-ruleForm">
        <el-form-item label="用户名" prop="name">
            <el-input v-model="formdata.name"></el-input>
        </el-form-item>
        <el-form-item label="密码" prop="password">
            <el-input type="password" v-model="formdata.password"></el-input>
        </el-form-item>

        <el-form-item>
            <el-button type="primary" @click="submitForm">登录</el-button>
            <el-button @click="resetForm('ruleForm')">重置</el-button>
        </el-form-item>
    </el-form>
</div>



<script src="js/vue.js"></script>
<script src="js/index.js"></script>
<script src="js/axios-0.18.0.js"></script>
<script>


    const vu = new Vue({
        el: '#app',

        data() {

            //  定义校验器  value  用户输入的数据
            // callback（new Error('非法参数提示信息')）  callback 无参数构造 表示数据合法！
            var validateName = (rule, value, callback) => {
                 if(value==''){
                     callback(new Error('必须输入用户名'))
                 }else{
                     //  用户名是否唯一 查询数据库
                       axios.get("data.html?name="+value).then((res)=>{
                           if(res.data){
                               callback(new Error('用户名已经存在')) //  非法

                           }else{
                               callback() //  合法
                           }
                       })
                 }

            };


            return {
              //   封装表单数据
                formdata: {
                    name: "",
                    password: ""

                },
                rules: {

                    name: [
                        //  自定义的校验器
                        {validator:validateName,trigger: "blur"}

                    ]

                }
            }
        },
        methods:{

            submitForm(){
                //  1  判断校验是否合法

                this.$refs['ruleForm'].validate((valid)=>{
                    alert(valid)
                    if(valid){
                         //  表单合法 提交数据给后台
                        axios.post("/xxx.do",this.formdata).then((res)=>{
                            if(res.data){
                                this.$message.success("添加成功")
                            }
                        })
                    }else{
                        this.$message.error("非法数据")
                    }
                })

            }

        }


    })

</script>
</body>
</html>